/**
 * 通用字符串分割函数，支持多种分隔器类型，并增加输入校验
 *
 * 该函数使用 `split()` 通过搜索模式将字符串分割成一个有序的子串列表，将这些子串放入一个数组，并返回该数组。
 *
 * 参考文档: [MDN Web Docs: split](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/split)
 *
 * @param input - 输入字符串，必须是有效的字符串类型
 * @param separator - 分隔器，可以是字符串、正则表达式或自定义分隔器对象
 * @param limit - 可选参数，限制返回数组的最大长度
 * @returns 分割后的字符串数组
 */
export function splitString(input: unknown, separator: string | RegExp | { [Symbol.split](str: string, limit?: number): string[] } = ',', limit?: number): string[] {
  // 校验 input 是否为字符串类型
  if (typeof input !== "string") {
    return [];
  }

  // 校验 limit 是否为非负整数（如果存在）
  if (limit !== undefined && (!Number.isInteger(limit) || limit < 0)) {
    return [];
  }

  // 如果 limit 为 0，直接返回空数组
  if (limit === 0) {
    return [];
  }

  // 调用原生的 split 方法，处理分隔逻辑
  return input.split(separator as never, limit);
}

export default splitString;